package com.chyblog.demo;

import com.chyblog.demo.filters.pre.SimpleFilter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.cloud.netflix.zuul.filters.ZuulProperties;
import org.springframework.context.annotation.Bean;

/**
 * 当 Zuul 与 Eureka、Ribbon 等组件配合使用 @EnableZuulProxy ，可以自动导入 Eureka 中的所有路由；
 * 使用 @EnableZuulServer 则只能手动配置。
 *
 * @author Arthur
 */
@EnableZuulProxy
@SpringBootApplication
public class GatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }

    @Bean
    public SimpleFilter simpleFilter() {
        return new SimpleFilter();
    }

    /**
     * 通过 @RefreshScope 注解来使 Zuul 的配置内容动态化。
     * 如果不要求刷新配置，不加这个 bean 也行。
     *
     * @return Zuul 配置属性
     */
    @Bean
    @RefreshScope
    @ConfigurationProperties("zuul")
    public ZuulProperties zuulProperties() {
        return new ZuulProperties();
    }
}
